home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / icon / packages.lha / packages / atari / ats.arc / TESTS.ARC / SPELLER.ICN < prev    next >
Text File  |  1990-03-28  |  1KB  |  50 lines

  1. procedure spell(n)
  2.    local m
  3.    n := integer(n) | stop(image(n)," is not an integer")
  4.    if n <= 12 then return {
  5.       "0zero,1one,2two,3three,4four,5five,6six,7seven,8eight,_
  6.          9nine,10ten,11eleven,12twelve," ? {
  7.             tab(find(n))
  8.             move(*n)
  9.             tab(upto(","))
  10.             }
  11.       }
  12.    else if n <= 19 then return {
  13.       spell(n[2] || "0") ?
  14.          (if ="for" then "four" else tab(find("ty"))) || "teen"
  15.       }
  16.    else if n <= 99 then return {
  17.       "2twen,3thir,4for,5fif,6six,7seven,8eigh,9nine," ? {
  18.          tab(upto(n[1]))
  19.          move(1)
  20.          tab(upto(",")) || "ty" ||
  21.             if n[2] ~= 0 then "-" || spell(n[2])
  22.          }
  23.       }
  24.    else if n <= 999 then return {
  25.       spell(n[1]) || " hundred" ||
  26.          (if (m := n[2:0]) ~= 0 then " and " || spell(m) else "")
  27.       }
  28.    else if n <= 999999 then return {
  29.       spell(n[1:-3]) || " thousand" ||
  30.          (if (m := n[2:0]) ~= 0 then " and " || spell(m) else "")
  31.       }
  32.    else if n <= 999999999 then return {
  33.       spell(n[1:-6]) || " million" ||
  34.          (if (m := n[2:0]) ~= 0 then " and " || spell(m) else "")
  35.       }
  36.    else fail
  37. end
  38.  
  39. procedure spellw(n)
  40.    write(n, "    ", spell(n))
  41.    return
  42. end
  43.  
  44. procedure main()
  45.    every spellw(1 to 25)
  46.    every spellw(30 to 110 by 3)
  47.    spellw(945123342)
  48.    every spellw(10000000 to 10000500 by 7)
  49. end
  50.